/**
 * 在app.use(router)之前调用
 */
var responseFormatter = async (ctx, next) => {

    //如果有返回数据，将返回数据添加到data中
    if (ctx.body) {
        ctx.body = {
            code: 0,
            message: 'success',
            data: ctx.body
        }
    } else {
        ctx.body = {
            code: 0,
            message: 'success'
        }
    }
}

var filterResponseFormatter = function(patternString) {
  return async function(ctx,next){
    var regExp = new RegExp(patternString);
    try {
        await next();//先去执行路由
    } catch (e) {
          //如果异常类型是API异常并且通过正则验证的url，将错误信息添加到响应体中返回。
           if(error instanceof ApiError && reg.test(ctx.originalUrl)){
               ctx.status = 200;
               ctx.body = {
                   code: error.code,
                   message: error.message
               }
           }
    }

    if(regExp.test(ctx.originalUrl)){
      responseFormatter(ctx)
    }
  }
}

module.exports = filterResponseFormatter;
